package com.zbj.homemade.spring.utils;

import org.apache.commons.lang3.StringUtils;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * |                    .  ’   *   ‘  .
 * |               _6                    "     o0000o
 * |  o00o _    .%                         %. o0000000o
 * | o000000o.:                              :(0000000o
 * | o00000os                                  .000000o
 * |  o0000/     <b>不了不了,改需求真的伤身体</>   .000o
 * |    o0o                                       .0o
 * |     y        <b>我认为源代码,就是SkrSkr</>     .
 * |    y                                           ,
 * |   y          <b>小熊猫保佑,代码永不修改</>        ,
 * |   p                            .                 .
 * |   p                           @@.                .
 * |    y                        ;@@@;               .
 * |    \                       ;@@@@;.@.          ,;S
 * |     、                     .@@@@@@;       ,@@@@@
 * |     @\.            .****...*@@@@;     .@@@@@@@@@@@.
 * |    @@@@\.     . @@@@@@@@@@@@@@@;    .@@@@@@@@@@@@@@@.
 * |   @@@@@@@@@.@@@@@@@@@@@@@@@@;   .@@@@@@@@@@@@@@@@@@@@@.
 * |  @@@@@@..@@@@..@@@@@@..@@@@@ .@@...@@@@@..@@..@@@@@..@@.
 * | @@@@@@@@..@..@@@@@@@@@@@@@;.@@@..@..@@@..@@....@@@..@@@@.
 * |@y@@@@@@@@..@@@@@@@@..@@@@i@@@@..@@@..@..@@..@@..@..@@@@n@.
 * |@n@@@@@@@..@@@@@@@@..@@@@@@@@@..@@@@@...@@..@@@@...@@@@@n@@.
 * |@@@@@@@@..@@@@@@@@..@@@@@@@@@..@@@@@@@.@@..@@@@@..@@@@@@@@@@.
 * |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.
 *
 * @program: principle
 * @description:
 * @author: Yinn
 * @create: 2019-03-01 09:35
 **/
public class Assert {

    private static class AssertException extends RuntimeException{
        public AssertException() {
        }

        public AssertException(String message) {
            super(message);
        }

        public AssertException(String message, Throwable cause) {
            super(message, cause);
        }

        public AssertException(Throwable cause) {
            super(cause);
        }

        public AssertException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
            super(message, cause, enableSuppression, writableStackTrace);
        }
    }

//    public static void notEmpty(String s,String msg){
//
//        if (StringUtils.isBlank(s)){
//            throw new AssertException(msg);
//        }
//    }

    public static void notEmpty(String s){

        if (StringUtils.isBlank(s)){
            throw new AssertException("不可为空");
        }
    }

    public static void notNull(Object s,String msg){

        if (s == null){
            throw new AssertException(msg);
        }
    }

    public static void notEmpty(Object s,String msg){

        if (s == null){
            throw new AssertException(msg);
        }

        if (s instanceof String)
            if (s == "" || s.equals(""))
                throw new AssertException(msg);

        if (s.getClass().isArray()){
            if (((Object[])s).length < 1)
                throw new AssertException(msg);
        }

        if (s instanceof Collection)
            if (((Collection) s).size() < 1)
                throw new AssertException(msg);

        if (s instanceof Map)
            if (((Map)s).size() < 1)
                throw new AssertException(msg);
    }

}
